﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using AcadPos.Entity;
using AcadPosApp.Utilidades;

namespace AcadPosApp.Cadastros
{
    public partial class CadastroHorario : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {

            }
        }

        protected void gvwPesquisa_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {

        }

        protected void btnConsultar_Click(object sender, EventArgs e)
        {
            carregaGridPesquisa();
        }

        private void carregaGridPesquisa()
        {
            gvwPesquisa.Visible = true;
            Horario horario = new Horario();
            horario.Turno = Convert.ToChar(ddlTurnoPesquisa.SelectedValue);
            gvwPesquisa.DataSource = ControlClass.CNHorario.listaHorario(horario);
            gvwPesquisa.DataBind();
            gvwPesquisa.SelectedIndex = -1;
        }
        protected void gvwPesquisa_RowCreated(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                ImageButton l = (ImageButton)e.Row.FindControl("EXCLUIR");
                l.CommandArgument = e.Row.RowIndex.ToString();

                ImageButton button2 = (ImageButton)e.Row.FindControl("ImgAlterar");
                button2.CommandArgument = e.Row.RowIndex.ToString();
            }
        }

        protected void gvwPesquisa_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                foreach (DataControlFieldCell cell in e.Row.Cells)
                {
                    // Verificando todas as colunas da linha
                    foreach (Control control in cell.Controls)
                    {
                        //No caso o botão é do tipo Imagem Button
                        ImageButton button = control as ImageButton;
                        if (button != null && button.CommandName == "Excluir")
                        {
                            // Adicionando a mensagem javascript
                            button.OnClientClick = "return ShowConfirm('Tem certeza que deseja excluir?', '" + button.ClientID + "');";
                        }
                    }
                }
                e.Row.Cells[4].Visible = false;
                e.Row.Cells[5].Visible = false;
            }
            if (e.Row.RowType == DataControlRowType.Header)
            {
                e.Row.Cells[4].Visible = false;
                e.Row.Cells[5].Visible = false;
            }
        }

        protected void btnConfirmar_Click(object sender, EventArgs e)
        {
            try
            {
                Horario horario = new Horario();
                horario.Hora_inicio = TimeSpan.Parse(txtHoraInicio.Text.Trim());
                horario.Hora_fim = TimeSpan.Parse(txtHoraFim.Text.Trim());
                horario.Situacao = Convert.ToChar(ddlSituacao.SelectedValue);
                horario.Turno = Convert.ToChar(ddlTurnoCadastro.SelectedValue);


                if (btnConfirmar.CommandName == "Inserir")
                {
                    if (ControlClass.CNHorario.inserirHorario(horario))
                    {
                        pnlCadastro.Visible = false;
                        carregaGridPesquisa();
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.SucessoInserir, "")), true);
                    }
                }
                else if (btnConfirmar.CommandName == "Alterar")
                {
                    horario.IdHorario = Convert.ToInt32(ViewState["ID_HORARIO"].ToString());
                    if (ControlClass.CNHorario.alterarHorario(horario))
                    {
                        pnlCadastro.Visible = false;
                        carregaGridPesquisa();
                        pnlPesquisa.Enabled = true;
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.SucessoAlterar, "")), true);
                    }
                }
            }
            catch (Exception ex)
            {
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Erro, ex.Message.ToString())), true);
            }
        }

        protected void btnCancelar_Click(object sender, EventArgs e)
        {
            pnlCadastro.Visible = false;
            pnlPesquisa.Enabled = true;
        }

        protected void gvwPesquisa_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            try
            {
                Horario horario = new Horario();
                int index = int.Parse((String)e.CommandArgument);
                horario.IdHorario = Convert.ToInt32(gvwPesquisa.DataKeys[index]["ID_HORARIO"].ToString());
                ddlTurnoCadastro.SelectedValue = Server.HtmlDecode(gvwPesquisa.Rows[index].Cells[5].Text.ToString().Trim());
                ddlSituacao.SelectedValue = Server.HtmlDecode(gvwPesquisa.Rows[index].Cells[4].Text.ToString().Trim());
                txtHoraInicio.Text = Server.HtmlDecode(gvwPesquisa.Rows[index].Cells[2].Text.ToString().Trim());
                txtHoraFim.Text = Server.HtmlDecode(gvwPesquisa.Rows[index].Cells[3].Text.ToString().Trim());

                if (e.CommandName == "Alterar")
                {
                    pnlCadastro.Visible = true;
                    pnlPesquisa.Enabled = false;
                    ViewState["ID_HORARIO"] = horario.IdHorario.ToString();
                    btnConfirmar.CommandName = "Alterar";
                }
                else if (e.CommandName == "Excluir")
                {
                    pnlCadastro.Visible = false;
                    if (ControlClass.CNHorario.excluirHorario(horario))
                    {
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.SucessoExcluir, "")), true);
                        carregaGridPesquisa();
                        pnlCadastro.Visible = false;
                        pnlPesquisa.Enabled = true;
                    }
                    else
                    {
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Nada, "Não foi possível realizar a operação. Por favor, tente novamente.")), true);
                    }
                }
            }
            catch
            {
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Erro, "")), true);
                pnlCadastro.Visible = false;
                pnlPesquisa.Enabled = true;
            }
        }

        protected void btnInserir_Click(object sender, EventArgs e)
        {
            pnlCadastro.Visible = true;
            pnlPesquisa.Enabled = false;  // Adicionado
            ddlTurnoCadastro.SelectedValue = "M";
            ddlSituacao.SelectedValue = "A";
            txtHoraInicio.Text = "08:00";
            txtHoraFim.Text = "18:00";
            btnConfirmar.CommandName = "Inserir";
        }

        protected void ddlTurnoPesquisa_SelectedIndexChanged(object sender, EventArgs e)
        {
            pnlCadastro.Visible = false;
            gvwPesquisa.Visible = false;
        }

    }
}